import { createApp } from 'vue'
import axios from 'axios'
// 载入 router 路由页面设置
import router from '@/assets/js/router'
// 载入 store 状态管理设置
import store from '@/assets/js/store'
import App from '@/App.vue'

// api
// icode - 0D0D878AE4273967(30天有效期)
// 替换 baseURL
axios.defaults.baseURL = 'http://apis.imooc.com/api/'
// 下面的 icode 值是从慕课网获取的 token 值，可以在课程右侧的项目接口校验码找到
axios.interceptors.request.use(config => {
  // get 请求，添加到 url 中
  config.params = { ...config.params, icode: '0D0D878AE4273967' }
  // 其他请求，添加到 body 中
  // 如果是上传文件，添加到 FormData 中
  if (config.data instanceof FormData) {
    config.data.append('icode', '0D0D878AE4273967')
  } else {
  // 普通的 body 对象，添加到 data 中
    config.data = { ...config.data, icode: '0D0D878AE4273967' }
  }
  return config
})

// 拦截器 - 懒加载
axios.interceptors.request.use(config => {
  // 懒加载是否启用
  store.commit('setloading', true)
  // 错误提示初始化
  store.commit('setError', { status: false, message: '' })
  return config
})
axios.interceptors.response.use(config => {
  setTimeout(() => {
    store.commit('setloading', false)
  }, 2000)
  return config
}, e => {
  const { error } = e.response.data
  // 提交错误提示 的数据
  store.commit('setError', { status: true, message: error })
  // 关闭懒加载
  store.commit('setloading', false)
  // 返回 错误提示
  return Promise.reject(error)
})

const app = createApp(App)
app.use(router)
app.use(store)
app.mount('#app')
